/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __4D192EBA_C08C_4413_B554_9D14976454F2__
#define __4D192EBA_C08C_4413_B554_9D14976454F2__

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

namespace xos_container
{
	class i_container;
}

namespace xos_common
{

	///////////////////////////////////////////////////////////////////////////////////////////////////////
	// 
	// 主接口
	// 

	class i_id_generator;
	class i_alloc;
	class i_md5;
	class i_misc;
	class i_sha;

	class i_common : public xos::i_release
	{
	protected:
		virtual ~i_common(){}

	public:
		//
		// 需要释放
		//
		virtual i_id_generator* id_generator() = 0;
		virtual i_alloc* alloc() = 0;
		virtual i_sha* sha() = 0;
		virtual i_md5* md5() = 0;
		//
		// 不需要释放
		//
		virtual i_misc* misc() = 0;
	};

    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    // 
    // 导出函数定义
    // 
    typedef int ( * f_create )( xos_container::i_container * pContainer, i_common ** ppv );

} // xos_common

#endif // __4D192EBA_C08C_4413_B554_9D14976454F2__
